home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CICA 1993 April
/
CICA MS Windows - April 1993.iso
/
unzipped
/
programr
/
listings
/
blx12
/
wsbtest.cpp
< prev
Wrap
Text File
|
1991-05-04
|
4KB
|
139 lines
// wsbtest.cpp
#include<windows.h>
#include"winapp.h"
#include"stdwin.h"
#include<string.h>
#include"winsb.h"
class WSBTest : public WinAppStdWindow
{
static WinClass wc;
WinScrollBar HScroll, VScroll;
public:
static long FAR PASCAL WndProc(HWND hWnd,
unsigned iMsg, WORD wParam, LONG lParam);
WSBTest(WinApp *myApp, char *winname) :
WinAppStdWindow(myApp, &wc, winname)
{
// insert calls to change window class info here
if(GetClassName() == NULL)
{
SetClassName("WSBTest");
SetClassWinProc(WSBTest::WndProc);
}
}
void Paint(void)
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(GetHandle(), &ps);
DispMessage(hdc);
EndPaint(GetHandle(), &ps);
}
void Display(void)
{
Window::Display();
HScroll.Init(GetHandle(),SB_HORZ,0,512);
VScroll.Init(GetHandle(),SB_VERT,0L,20000);
HScroll.SetPageScroll(4);
VScroll.SetPageScroll(25);
HDC hdc = GetDC(GetHandle());
DispMessage(hdc);
ReleaseDC(GetHandle(),hdc);
}
void WinScroll(unsigned msg, WORD wParam, LONG lParam);
void DispMessage(HDC hdc);
};
WinClass WSBTest::wc;
void WSBTest::WinScroll(unsigned msg, WORD wParam, LONG lParam)
{
HDC hDC = GetDC(GetHandle());
switch(msg)
{
case WM_HSCROLL:
HScroll.ScrollUpdate(wParam, lParam);
break;
case WM_VSCROLL:
VScroll.ScrollUpdate(wParam, lParam);
break;
}
DispMessage(hDC);
ReleaseDC(GetHandle(),hDC);
}
void WSBTest::DispMessage(HDC hdc)
{
char buf[80];
char *fmt = " %s: Current=%05d Minimum=%05d Maximum=%05d ";
wsprintf((LPSTR)buf,(LPSTR)fmt,(LPSTR)" VERTICAL",
VScroll.GetCurPos(),
VScroll.GetMinPos(),
VScroll.GetMaxPos());
TextOut(hdc,0,0,(LPSTR)buf,strlen(buf));
wsprintf((LPSTR)buf,(LPSTR)fmt,(LPSTR)"HORIZONTAL",
HScroll.GetCurPos(),
HScroll.GetMinPos(),
HScroll.GetMaxPos());
TextOut(hdc,0,40,(LPSTR)buf,strlen(buf));
}
long FAR PASCAL _export WSBTest::WndProc(HWND hWnd, unsigned message,
WORD wParam, LONG lParam)
{
WSBTest *pWSBTest = (WSBTest *)GetPointer(hWnd);
switch(message)
{
case WM_CREATE: // insert the pointer
pWSBTest = (WSBTest *)((LPCREATESTRUCT)lParam)->lpCreateParams;
SetPointer(hWnd, pWSBTest);
break;
case WM_PAINT:
pWSBTest->Paint(); // call Paint method
break;
case WM_CLOSE:
DestroyWindow(hWnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_HSCROLL:
case WM_VSCROLL:
pWSBTest->WinScroll(message, wParam, lParam);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
}
int PASCAL WinMain(HANDLE hInstance, HANDLE hPrevInstance, LPSTR lpszCmdLine,
int nCmdShow)
{
// create an instance of WinApp and initialize it
WinApp MyApp(hInstance, hPrevInstance, lpszCmdLine, nCmdShow);
// create an instance of WSBTest for MyApp with winname, "Hello!"
WSBTest MyWin(&MyApp, "Scroll-Bar Test Window");
MyWin.Display(); // open the window
return MyApp.MessageLoop(); // process any messages
}